{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Multi-point flux approximation (MPFA)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Porepy supports mpfa discretization for darcy flow problem:\n",
    "\\begin{equation}\n",
    "q = -K \\nabla p,\\quad \\nabla \\cdot q = f\n",
    "\\end{equation}\n",
    "\n",
    "We can write this as a single equation of pressure:\n",
    "\\begin{equation}\n",
    "-\\nabla \\cdot K\\nabla  p = f\n",
    "\\end{equation}\n",
    "\n",
    "For each control volume $\\Omega_k$ we then have\n",
    "\\begin{equation}\n",
    "\\int_{\\Omega_k} f dv = \\int_{\\partial\\Omega_k} (K\\nabla p)\\cdot n dA,\n",
    "\\end{equation}\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "To solve this system we first have to create the grid. Then we need to define boundary conditions. We set the bottom boundary as a Dirichlet boundary. The other boundaries are set to Neuman. We also need to create the permeability tensor:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import porepy as pp\n",
    "\n",
    "# Create grid\n",
    "n = 5\n",
    "g = pp.CartGrid([n,n])\n",
    "g.compute_geometry()\n",
    "\n",
    "# Define boundary type\n",
    "dirich = np.ravel(np.argwhere(g.face_centers[1] < 1e-10))\n",
    "bound = pp.BoundaryCondition(g, dirich, ['dir']*dirich.size)\n",
    "\n",
    "# Create stiffness matrix\n",
    "k = np.ones(g.num_cells)\n",
    "constit = pp.SecondOrderTensor(g.dim, k)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We now define the boundary conditions. We set zero pressure on the bottom boundary, and a constant innflow on the top boundary. Note that the traction on the Neumann boundary is the discharge, not the flux. To get the discharge for each boundary face we scale the flux by the face areas."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "top_faces = np.ravel(np.argwhere(g.face_centers[1] > n - 1e-10))\n",
    "bot_faces = np.ravel(np.argwhere(g.face_centers[1] < 1e-10))\n",
    "\n",
    "p_b = np.zeros(g.num_faces)\n",
    "p_b[top_faces] = 1 * g.face_areas[top_faces]\n",
    "p_b[bot_faces] = 0\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can now solv this problem using the Mpfa class. We assume no source or sinks $f=0$:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "mpfa_solver = pp.Mpfa()\n",
    "\n",
    "f = np.zeros(g.num_cells)\n",
    "\n",
    "param = pp.Parameters(g)\n",
    "param.set_tensor(\"flow\", constit)\n",
    "param.set_bc(\"flow\", bound)\n",
    "param.set_bc_val(\"flow\", p_b)\n",
    "param.set_source(\"flow\", f)\n",
    "data = {'param': param}\n",
    "\n",
    "A, b = mpfa_solver.matrix_rhs(g, data)\n",
    "\n",
    "p_class = np.linalg.solve(A.A, b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxkAAAKkCAYAAABswPLgAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzs3Xt8VPWd//H3dyYEQhKu4RJCKiBQ\nbgImAbzk53oBtbTFolSxUmGRXrb6aK3d7aoo4qXo6rbVXWx3bWu7lXpp+1jBRUwBwVovEYIQRVCu\nAZIgBJHcbzPz/f2RME3ITIDDYc6EvJ6PxzyYmXPmO5/5Ooznw+fzPcdYawUAAAAAbvF5HQAAAACA\ncwtJBgAAAABXkWQAAAAAcBVJBgAAAABXkWQAAAAAcBVJBgAAAABXkWQAAAAAnZAxpo8xZo0xZmfz\nn72j7Bc0xmxpvr1ySmNznQwAAACg8zHGPC7pqLX2MWPM3ZJ6W2v/NcJ+VdbalNMamyQDAAAA6HyM\nMZ9Iutxae9AYky7pDWvtFyPsd9aTDDISAAAAnG3G6wBOxXBjbI3HMRyUPpJU1+KpZ6y1z5zKa40x\nx6y1vZrvG0mfH398wn4BSVskBSQ9Zq1dfrKxE04lAAAAAACt1Uj6jscxLJbqrLU50bYbY9ZKGhhh\n08KWD6y11hgTraBwnrW2xBgzTNI6Y8yH1trd7cVFkgEAAACco6y1U6NtM8YcMsakt2iXOhxljJLm\nP/cYY96QdKGkdpMMzi4FAAAAdE6vSJrbfH+upBUn7mCM6W2M6dp8P03SpZK2nWxgKhkAAACAA0Yd\n/mD6MUl/NMbcJmmfpBslyRiTI+m71toFkkZL+m9jTEhNBYrHrLUkGQAAAADastZ+JumqCM8XSFrQ\nfP8dSRec7tgkGQAAAIADRlIXr4OIU6zJAAAAAOAqkgwAAAAArqJdCgAAAHDgHFj4fdZQyQAAAADg\nKpIvAAAAwAEWfkdHJQMAAACAq0gyAAAAALiKdikAAADAARZ+R0clAwAAAICrSL4AAAAAB1j4HR2V\nDAAAAACuIskAAAAA4CrapQAAAAAHWPgdHZUMAAAAAK4i+QIAAAAcYOF3dFQyAAAAALiKJAMAAACA\nq2iXAgAAABxg4Xd0VDIAAAAAuIrkCwAAAHCAhd/RUckAAAAA4CqSDAAAAACuol0KAAAAcIB2qeio\nZAAAAABwFUkGAAAAAFfRLgUAAAA4xMF0ZFQyAAAAALiK5AsAAABwgIXf0VHJAAAAAOAqkgwAAAAA\nriLJANChpKSkaM+ePRG3/e53v1Nubm6MIwIAdFZGTWsPvLzFK5IMAG08//zzysnJUUpKitLT0/Wl\nL31Jb731luPxjDHatWtXq+cqKyt11113aciQIUpOTtYXvvAFzZo1S++99167Y1VVVWnYsGGO4mho\naNDixYs1YsQIJScna8iQIZo/f76KioocjXe2LF68WHPmzPE6jLOqqKhIxhgFAgGvQwEAnAUkGQBa\n+dnPfqY777xT9957rw4dOqT9+/fre9/7nlasWHHaY0U7gKyvr9eVV16pDz/8UCtXrlRFRYW2b9+u\n2bNn67XXXjutsU7HrFmz9Morr+j5559XeXm5CgsLlZ2drddff/2Mx4b7SEAAxLvjC7+9vMUrkgwA\nYeXl5Vq0aJGefvppXX/99UpOTlaXLl301a9+VU888YQkacOGDbr44ovVq1cvpaen64477lBDQ0N4\nDGOMnn76aY0YMUIjRozQZZddJkmaMGGCUlJS9NJLL+m5555TcXGxli9frnHjxsnv9ys5OVmzZs3S\n4sWLo451/LnjVZHPPvtMM2bMUI8ePTR58mTt3r076mdbu3at1qxZoxUrVmjSpElKSEhQz549dfvt\nt+u2226TJJWWlmrGjBnq06ePhg8frl/96lfh1y9evFhf//rXNWfOHKWmpuqCCy7Qjh079Oijj6p/\n//7KzMzU6tWrw/tffvnluueeezR58mT16NFD1113nY4ePSpJeuONNzR48OBW8Q0ZMkRr165VXl6e\nlixZopdeekkpKSmaMGFC+L/NbbfdpvT0dGVkZOi+++5TMBiM+Flra2s1d+5c9e7dW6NHj9bjjz/e\n6v1KS0t1ww03qF+/fho6dKj+4z/+I7ytvr5ed955pwYNGqRBgwbpzjvvVH19fau4H3/8cfXv31/p\n6elavny5Vq1apZEjR6pPnz5asmRJeKxQKKTHHntM559/vvr27asbb7wxPAfHvxe9evVSSkqK3n33\nXf3ud7/TpZdeqh/+8Ifq27evFi1apD59+ujDDz8Mj3n48GF1795dZWVlUf9bAwC8R5IBIOzdd99V\nXV2dZs6cGXUfv9+vn//85zpy5Ijeffddvf766/rFL37Rap/ly5frvffe07Zt2/Tmm29KkgoLC1VV\nVaWbbrpJa9eu1TXXXKPk5OSTxtRyrBPdfvvt6tatmw4ePKhnn31Wzz77bNRx1q5dq8mTJyszMzPq\nPrNnz9bgwYNVWlqqP//5z7r33nu1bt268Pb/+7//0ze/+U19/vnnuvDCC3XNNdcoFAqppKREixYt\n0ne+851W4/3+97/Xs88+q4MHDyohIUHf//73T/p5r732Wt1777266aabVFVVpcLCQknSvHnzlJCQ\noF27dmnz5s1avXq1fv3rX0cc48EHH1RRUZH27NmjNWvWaNmyZeFtoVBIX/3qVzVhwgSVlJTo9ddf\n15NPPqm//OUvkqSf/OQnys/P15YtW1RYWKgNGzbokUceCb/+008/VV1dnUpKSvTQQw/pW9/6lpYt\nW6ZNmzbpb3/7mx5++GHt3btXkvSf//mfWr58uf7617+qtLRUvXv31u233y5J4e/FsWPHVFVVpYsv\nvliS9N5772nYsGE6dOiQ7r//fs2ePbtV/C+88IKuuuoq9evX76RzCQDwkLX2dG4AzmHLli2zAwYM\nOK3X/PznP7df+9rXwo8l2ddff73VPpLszp07w4+vuuoq+6//+q/hx5s3b7Y9e/a0qampduTIkac0\nViAQsAkJCXb79u3hbffcc4+99NJLI8a5YMECe9NNN0X9HPv377c+n89WVFSEn7v77rvt3LlzrbXW\nPvDAA3bq1Knhba+88opNTk62gUDAWmttRUWFlWQ///xza621//AP/9DqM3700Ue2S5cuNhAI2PXr\n19uMjIxW73/eeefZNWvWhN/rlltuCW/79NNPbWJioq2pqQk/9/zzz9vLL7884mcZOnSozcvLCz/+\n1a9+FX6//Px8m5mZ2Wr/JUuW2Hnz5llrrR02bJh99dVXw9vy8vLseeedZ621dv369bZbt25tPnN+\nfn54/6ysLPvyyy9ba60dNWqUXbt2bXhbaWmpTUhIsI2NjXbv3r1Wkm1sbAxv/+1vf9smtuPxhkIh\na6212dnZ9qWXXor4uQGcU073GNWT2yjJ5nt8k1Tg9TxEusXzonQAMda3b18dOXJEgUBACQmRfx52\n7Nihu+66SwUFBaqpqVEgEFB2dnarfdqrFhx/n4MHD4YfT5w4UceOHdPatWu1YMGCUxqrrKxMgUCg\n1fbzzjuv3ffcsWNH1O2lpaXq06ePUlNTW41XUFAQfjxgwIDw/aSkJKWlpcnv94cfS00L03v16tUm\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f1a88432dd8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "pp.plot_grid(g, cell_value=p_class, figsize=(15, 12))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To understand what goes on under the hood of the Mpfa class, we can also create the lhs and rhs manually. \n",
    "\n",
    "We start by discretizing the fluxes by using the multi-point stress approximation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "flux, bound_flux, _, _ = pp.numerics.fv.mpfa.mpfa(g, constit, bound)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "mpfa returns the two sparse matrices \"flux\" and \"bound_flux\". They give  the discretization of the fluxes over each face:\n",
    "\\begin{equation}\n",
    "F = \\text{flux} \\cdot p + \\text{bound_flux} \\cdot p_b\n",
    "\\end{equation}\n",
    "Here $p$ is a vector of cell center pressure and has length g.num_cells. The vector $p_b$ is the boundary condition values. It is the pressure for Dirichlet boundaries and flux for Neumann boundaries and has length g.num_faces.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We are now ready to set up the linear system of equations and solve it. We assume no source and sinks $f = 0$. Each row in the discretized system is now\n",
    "\\begin{equation}\n",
    "\\int_{\\Omega_k} f dv = \\int_{\\partial\\Omega_k} F dA = [div \\cdot \\text{flux} \\cdot p + div\\cdot\\text{bound_flux}\\cdot p_b]_k,\n",
    "\\end{equation}\n",
    "We move the known boundary variable $u_b$ over to the right hand side and solve the system:\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "div = pp.fvutils.scalar_divergence(g)\n",
    "A = div * flux\n",
    "b = f - div * bound_flux * p_b\n",
    "\n",
    "p = np.linalg.solve(A.A, b)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This gives us the save results as using the Mpfa class:\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "assert np.allclose(p, p_class)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can also plot the pressure"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxkAAAKkCAYAAABswPLgAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzs3Xt8VPWd//H3dyYEQhKu4RJCKiBQ\nbgImAbzk53oBtbTFolSxUmGRXrb6aK3d7aoo4qXo6rbVXWx3bWu7lXpp+1jBRUwBwVovEYIQRVCu\nAZIgBJHcbzPz/f2RME3ITIDDYc6EvJ6PxzyYmXPmO5/5Ooznw+fzPcdYawUAAAAAbvF5HQAAAACA\ncwtJBgAAAABXkWQAAAAAcBVJBgAAAABXkWQAAAAAcBVJBgAAAABXkWQAAAAAnZAxpo8xZo0xZmfz\nn72j7Bc0xmxpvr1ySmNznQwAAACg8zHGPC7pqLX2MWPM3ZJ6W2v/NcJ+VdbalNMamyQDAAAA6HyM\nMZ9Iutxae9AYky7pDWvtFyPsd9aTDDISAAAAnG3G6wBOxXBjbI3HMRyUPpJU1+KpZ6y1z5zKa40x\nx6y1vZrvG0mfH398wn4BSVskBSQ9Zq1dfrKxE04lAAAAAACt1Uj6jscxLJbqrLU50bYbY9ZKGhhh\n08KWD6y11hgTraBwnrW2xBgzTNI6Y8yH1trd7cVFkgEAAACco6y1U6NtM8YcMsakt2iXOhxljJLm\nP/cYY96QdKGkdpMMzi4FAAAAdE6vSJrbfH+upBUn7mCM6W2M6dp8P03SpZK2nWxgKhkAAACAA0Yd\n/mD6MUl/NMbcJmmfpBslyRiTI+m71toFkkZL+m9jTEhNBYrHrLUkGQAAAADastZ+JumqCM8XSFrQ\nfP8dSRec7tgkGQAAAIADRlIXr4OIU6zJAAAAAOAqkgwAAAAArqJdCgAAAHDgHFj4fdZQyQAAAADg\nKpIvAAAAwAEWfkdHJQMAAACAq0gyAAAAALiKdikAAADAARZ+R0clAwAAAICrSL4AAAAAB1j4HR2V\nDAAAAACuIskAAAAA4CrapQAAAAAHWPgdHZUMAAAAAK4i+QIAAAAcYOF3dFQyAAAAALiKJAMAAACA\nq2iXAgAAABxg4Xd0VDIAAAAAuIrkCwAAAHCAhd/RUckAAAAA4CqSDAAAAACuol0KAAAAcIB2qeio\nZAAAAABwFUkGAAAAAFfRLgUAAAA4xMF0ZFQyAAAAALiK5AsAAABwgIXf0VHJAAAAAOAqkgwAAAAA\nriLJANChpKSkaM+ePRG3/e53v1Nubm6MIwIAdFZGTWsPvLzFK5IMAG08//zzysnJUUpKitLT0/Wl\nL31Jb731luPxjDHatWtXq+cqKyt11113aciQIUpOTtYXvvAFzZo1S++99167Y1VVVWnYsGGO4mho\naNDixYs1YsQIJScna8iQIZo/f76KioocjXe2LF68WHPmzPE6jLOqqKhIxhgFAgGvQwEAnAUkGQBa\n+dnPfqY777xT9957rw4dOqT9+/fre9/7nlasWHHaY0U7gKyvr9eVV16pDz/8UCtXrlRFRYW2b9+u\n2bNn67XXXjutsU7HrFmz9Morr+j5559XeXm5CgsLlZ2drddff/2Mx4b7SEAAxLvjC7+9vMUrkgwA\nYeXl5Vq0aJGefvppXX/99UpOTlaXLl301a9+VU888YQkacOGDbr44ovVq1cvpaen64477lBDQ0N4\nDGOMnn76aY0YMUIjRozQZZddJkmaMGGCUlJS9NJLL+m5555TcXGxli9frnHjxsnv9ys5OVmzZs3S\n4sWLo451/LnjVZHPPvtMM2bMUI8ePTR58mTt3r076mdbu3at1qxZoxUrVmjSpElKSEhQz549dfvt\nt+u2226TJJWWlmrGjBnq06ePhg8frl/96lfh1y9evFhf//rXNWfOHKWmpuqCCy7Qjh079Oijj6p/\n//7KzMzU6tWrw/tffvnluueeezR58mT16NFD1113nY4ePSpJeuONNzR48OBW8Q0ZMkRr165VXl6e\nlixZopdeekkpKSmaMGFC+L/NbbfdpvT0dGVkZOi+++5TMBiM+Flra2s1d+5c9e7dW6NHj9bjjz/e\n6v1KS0t1ww03qF+/fho6dKj+4z/+I7ytvr5ed955pwYNGqRBgwbpzjvvVH19fau4H3/8cfXv31/p\n6elavny5Vq1apZEjR6pPnz5asmRJeKxQKKTHHntM559/vvr27asbb7wxPAfHvxe9evVSSkqK3n33\nXf3ud7/TpZdeqh/+8Ifq27evFi1apD59+ujDDz8Mj3n48GF1795dZWVlUf9bAwC8R5IBIOzdd99V\nXV2dZs6cGXUfv9+vn//85zpy5Ijeffddvf766/rFL37Rap/ly5frvffe07Zt2/Tmm29KkgoLC1VV\nVaWbbrpJa9eu1TXXXKPk5OSTxtRyrBPdfvvt6tatmw4ePKhnn31Wzz77bNRx1q5dq8mTJyszMzPq\nPrNnz9bgwYNVWlqqP//5z7r33nu1bt268Pb/+7//0ze/+U19/vnnuvDCC3XNNdcoFAqppKREixYt\n0ne+851W4/3+97/Xs88+q4MHDyohIUHf//73T/p5r732Wt1777266aabVFVVpcLCQknSvHnzlJCQ\noF27dmnz5s1avXq1fv3rX0cc48EHH1RRUZH27NmjNWvWaNmyZeFtoVBIX/3qVzVhwgSVlJTo9ddf\n15NPPqm//OUvkqSf/OQnys/P15YtW1RYWKgNGzbokUceCb/+008/VV1dnUpKSvTQQw/pW9/6lpYt\nW6ZNmzbpb3/7mx5++GHt3btXkvSf//mfWr58uf7617+qtLRUvXv31u233y5J4e/FsWPHVFVVpYsv\nvliS9N5772nYsGE6dOiQ7r//fs2ePbtV/C+88IKuuuoq9evX76RzCQDwkLX2dG4AzmHLli2zAwYM\nOK3X/PznP7df+9rXwo8l2ddff73VPpLszp07w4+vuuoq+6//+q/hx5s3b7Y9e/a0qampduTIkac0\nViAQsAkJCXb79u3hbffcc4+99NJLI8a5YMECe9NNN0X9HPv377c+n89WVFSEn7v77rvt3LlzrbXW\nPvDAA3bq1Knhba+88opNTk62gUDAWmttRUWFlWQ///xza621//AP/9DqM3700Ue2S5cuNhAI2PXr\n19uMjIxW73/eeefZNWvWhN/rlltuCW/79NNPbWJioq2pqQk/9/zzz9vLL7884mcZOnSozcvLCz/+\n1a9+FX6//Px8m5mZ2Wr/JUuW2Hnz5llrrR02bJh99dVXw9vy8vLseeedZ621dv369bZbt25tPnN+\nfn54/6ysLPvyyy9ba60dNWqUXbt2bXhbaWmpTUhIsI2NjXbv3r1Wkm1sbAxv/+1vf9smtuPxhkIh\na6212dnZ9qWXXor4uQGcU073GNWT2yjJ5nt8k1Tg9TxEusXzonQAMda3b18dOXJEgUBACQmRfx52\n7Nihu+66SwUFBaqpqVEgEFB2dnarfdqrFhx/n4MHD4YfT5w4UceOHdPatWu1YMGCUxqrrKxMgUCg\n1fbzzjuv3ffcsWNH1O2lpaXq06ePUlNTW41XUFAQfjxgwIDw/aSkJKWlpcnv94cfS00L03v16tUm\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f1a88432e80>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "pp.plot_grid(g, cell_value=p, figsize=(15, 12))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can also retrieve the flux for each face. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1oAAAKhCAYAAABJgN/wAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzs3XuUXXVhL/DvmZk8J++EQF6QhIck\nBAgkgNiUqoBSH7RoKlARuYj1Vu4qXl1tsSI+q7X32iuttnfZar3KQurVilyQVAS15RFCMIAkEAkh\nQB4ESAhJZjKZ175/hEyJZEJC9mRzJp/PWrNm5ux99vmeX07mnO/Ze/9OrSiKAAAAUJ6GqgMAAAD0\nN4oWAABAyRQtAACAkilaAAAAJVO0AAAASqZoAQAAlEzRAgAAKJmiBQAAUDJFCwAAoGRN+7h+0Scp\ngNe8cePGZcOGDSkKfwbKNH/+/PzgBz8wrn2gVqtlw4YNGTNmTNVR+pVarZZzzjknt9xyS9VR+pVa\nrZaRI0dm06ZNVUcBXlltb1ayRwsAAKBkihYAAEDJFC0AAICSKVoAAAAlU7QAAABKpmgBAACUTNEC\nAAAomaIFAABQMkULAACgZIoWAABAyRQtAACAkilaAAAAJVO0AAAASqZoAQAAlEzRAgAAKJmiBQAA\nUDJFCwAAoGSKFgAAQMkULQAAgJIpWgAAACVTtAAAAEqmaAEAAJRM0QIAACiZogUAAFAyRQsAAKBk\nihYAAEDJFC0AAICSKVoAAAAlU7QAAABKpmgBAACUTNECAAAomaIFAABQMkULAACgZIoWAABAyRQt\nAACAkilaAAAAJVO0AA5Sw4YNy8qVK3e77Fvf+lbmzZt3gBMBQP+haAH0oeuuuy5z587NsGHDMmHC\nhPzu7/5u7rjjjle9vVqtlhUrVuxy2ZYtW/LRj340U6dOTXNzcw4//PDMnz8/99xzzx63tXXr1kyf\nPv1V5Whvb8+nP/3pHH300Wlubs7UqVNz6aWXZtWqVa9qe33lC1/4Qi666KKqY/SpVatWpVarpbOz\ns+ooALyEogXQR/7mb/4mH/nIR/IXf/EXWb9+fZ588sl8+MMfzo9+9KN93lZvL6K3b9+eN7/5zfnV\nr36Vm266KZs3b87DDz+cCy64ILfccss+bWtfzJ8/PzfeeGOuu+66vPDCC3nggQcyZ86c3Hbbbfu9\nbcqnhAFUoCiKffkCDlJjx44tdvzJYG9s2rSpaG5uLr73ve/1us4999xTjBo1qkhSHHbYYcXll19e\nbN++vWd5kuKrX/1qcdRRRxVTp04tfvu3f7tIUgwdOrRobm4urr/++uIf//Efi8MOO6zYunXrHvP8\n5rZ2Xvboo48WRVEUzz33XPHOd76zGD58eHHKKacUV111VfFbv/Vbu93WrbfeWgwePLh48skne729\nNWvWFO985zuL0aNHF0ceeWTx9a9/vWfZpz71qWL+/PnFe9/73mLYsGHFrFmziuXLlxdf+MIXikMO\nOaSYPHly8W//9m896//O7/xOceWVVxannHJKMXz48OLcc88tNmzYUBRFUfzsZz8rJk2atMttH3HE\nEcWtt95aJCmSFE1NTUVzc3NxwgknFEWx49/m0ksvLQ477LBi4sSJxSc+8Ymis7Nzt/ejtbW1uPji\ni4tRo0YVxx57bPGlL31pl9tbs2ZN8a53vasYN25cMXXq1OKaa67pWdbW1lZcccUVxYQJE4oJEyYU\nV1xxRdHW1rZL7i996UvFIYccUhx22GHFD3/4w+Lmm28ujj766GL06NHFX/7lX/Zsq6urq/jiF79Y\nTJ8+vRgzZkzxB3/wBz1jMGXKlCJJ0dzcXDQ3Nxd33XVX8c///M/FG97whuIjH/lIMWbMmOLjH/94\nMXr06OLBBx/s2eb69euLIUOGFM8880yv/467k6Q455xz9uk6vLIkxciRI6uOAeydvepO9mgB9IG7\n7747bW1tOe+883pdp7GxMbNnz+5Z/7bbbsvf//3f77LODTfckHvuuSfLli3Lv//7vydJHnjggWzd\nujXnn39+fvrTn+atb31rmpubXzHTS7f1my6//PIMHjw469atyze/+c1885vf7HU7P/3pT3Pqqadm\nypQpva5zwQUXZPLkyVm7dm2+//3v5y/+4i9y++239yz/f//v/+V973tfnn/++Zx00kl561vfmu7u\n7qxZsyZXX311PvShD+2yvW9/+9v55je/mXXr1qWpqSl/8id/8or3N0k+9rGP5fzzz8/WrVvzwAMP\nJEkuueSSNDU1ZcWKFVmyZEl+8pOf5J/+6Z92e/3PfOYzWbVqVVauXJlbb7011157bc+y7u7uvPOd\n78yJJ56YNWvW5LbbbstXvvKV/Nu//VuS5C//8i+zcOHC3H///XnggQeyaNGifP7zn++5/tNPP522\ntrasWbMmn/3sZ/PBD34w1157be677778x3/8Rz73uc/l8ccfT5L83d/9XW644Yb84he/yNq1azN6\n9OhcfvnlSdLzuNi0aVO2bt2a008/PUlyzz33ZPr06Vm/fn0++clP5oILLtgl/3e/+92ceeaZOeSQ\nQ/ZqLAHYR3vbyAp7tOCgZo/Wvrn22muLQw899BXXe/e7390zrv/rf/2v4vd///d7liUpbrvttl3W\nz0v2QhVFUZx55pnFn//5n/f8vmTJkmLkyJHF8OHDi2OOOWavttXZ2Vk0NTUVDz/8cM+yj3/8473u\n0brsssuK888/v9f79OSTTxYNDQ3F5s2bey678sori/e///1FUezYo3XWWWf1LLvxxhuL5ubmnr1K\nmzdvLpIUzz//fFEUO/ZovfQ+Ll26tBgwYEDR2dn5inu0PvaxjxXvfe97e5Y9/fTTxcCBA4vW1tae\ny6677rrijW98427vy7Rp04oFCxb0/P6P//iPPbe3cOHCYsqUKbus/4UvfKG45JJLiqIoiunTpxc3\n33xzz7IFCxYURxxxRFEUO/ZoDR48+GX3eeHChT3rn3zyycUPf/jDoiiK4thjjy1++tOf9ixbu3Zt\n0dTUVHR0dBSPP/54kaTo6OjoWf7P//zPL8u2M293d3dRFEUxZ86c4l/+5V92e7/3JPZo9YnYowX1\nZK+6U1M19Q6gfxs7dmyee+65dHZ2pqlp939qf/3rX/dMjDFixIh0dnZmzpw5u6yzp71GO29n3bp1\nPb/Pnj07mzZtyk9/+tNcdtlle7WtZ599Np2dnbssP+KII/Z4m7/+9a97Xb527dqMGTMmw4cP32V7\nixcv7vn90EMP7fl5yJAhGTduXBobG3t+T3ZM1jFq1KiXZT/iiCPS0dGR5557rtcMvXniiSfS0dGR\nCRMm9FzW3d3d69isXbt2l2Uv/fmJJ57I2rVrezImSVdXV377t3+757ovHccjjjgia9eu7fl97Nix\nL7vPvzkuW7du7bmt8847Lw0N/3kgSmNjY9avX9/rff3N+3Taaadl6NCh+fnPf54JEyZkxYoVOffc\nc3u9PgD7x6GDAH3g9NNPz6BBg3LDDTf0us4f//Ef95SRzZs35wtf+EKKothlnVqttsfbOfPMM/OT\nn/wkLS0tr5ipt20dcsghaWpqylNPPdVz2ZNPPtnrds4666wsWrQoq1ev3u3yiRMnZuPGjdmyZcsu\n25s0adIrZuzNb2YbMGBAxo0bl+bm5rS2tvYs6+rqyrPPPtvz+2/e5ylTpmTQoEF57rnnsmnTpmza\ntCmbN2/O0qVLd3u7EyZM2OV+vjTHlClTMm3atJ7tbNq0KVu2bMmPf/zjJDvG4Yknntgl98SJE1/V\n/Z8yZUpuueWWXW6rra0tkyZN6vXfdXeXv//978+1116b73znO5k/f34GDx78qvIA8MoULYA+MHLk\nyHz2s5/N5ZdfnhtuuCGtra3p6OjILbfckj/7sz9LsmNa9p17ux555JH8wz/8wytu99BDD93ls68u\nvvjiTJgwIeedd14eeuihdHV1pa2tbZe9R6+ksbEx73rXu/LpT386ra2tWbZsWf7P//k/va5/1lln\n5eyzz855552X++67L52dndmyZUv+9//+3/nmN7+ZKVOm5A1veEM+/vGPp62tLQ8++GC+8Y1v7Nc0\n69dee22WLVuW1tbWXH311Zk/f34aGxtzzDHHpK2tLTfffHM6Ojry+c9/Ptu3b++53qGHHppVq1al\nu7s7yY7i9Ja3vCUf+9jHsnnz5nR3d+exxx7LL37xi93e7nve85588YtfzPPPP581a9bkq1/9as+y\nU089NcOHD8+XvvSlbNu2LV1dXXnooYdy7733JkkuvPDCfP7zn8+zzz6b5557Lp/97Gdf9Rj81//6\nX/OJT3yip7g9++yzPbNXHnLIIWloaOj1M9Fe6qKLLsoPf/jDXHvttbn44otfVRYA9o6iBdBHPvax\nj+Vv/uZv8vnPfz6HHHJIpkyZkq9+9av5/d///STJ//yf/7NnD8kHP/jBnH/++a+4zU9/+tN5//vf\nn1GjRuV73/teBg8enJ/97GeZOXNm3v72t2fEiBF53etel3vvvTff+9739jrrV7/61WzdujWHHXZY\nLrnkkvyX//Jf9rj+97///bztbW/L+eefn5EjR2bWrFlZvHhxzjrrrCQ7JlpYtWpVJk6cmPPOOy+f\n+cxnepa9Gu973/tyySWX5LDDDktbW1v+9m//NsmOQvv3f//3ueyyyzJp0qQ0Nzdn8uTJPdf7vd/7\nvSQ7DtM7+eSTk+yYWKO9vT0zZ87M6NGjM3/+/F0Ov3ypq6++OpMnT860adNy1llnZf78+Rk0aFCS\nHQX1pptuyv33359p06Zl3Lhxueyyy/LCCy8kSa666qrMnTs3J5xwQo4//vicfPLJueqqq17V/b/i\niity7rnn5i1veUuGDx+e17/+9T2fkzZ06NB84hOfyG/91m9l1KhRWbhwYa/bmTJlSk4++eTUarWe\nQxwB6Bu13zxM5RXs08pA/zFu3Lhs2LDhZYe2sX/mz5+fH/zgB8Z1D974xjfmoosuetk5Z6+kVqtl\nw4YNGTNmTGlZ/uEf/iHXX399r3vA6sGll16aiRMn7jID4r6o1Wo555xzev2cNl6dWq2WkSNHZtOm\nTVVHAV7Zno/rf5E9WgDQi3Xr1uXOO+9Md3d3li9fni9/+ct7nLL/tW7VqlX513/913zgAx+oOgpA\nv6doAUAv2tvb86EPfSjDhw/Pm9/85vze7/1ePvzhD1cd61X55Cc/mVmzZuVP//RPM23atKrjAPR7\npncH4DXt5z//eWW3fcQRR+Shhx6q7PbL9LnPfS6f+9znqo4BcNCwRwsAAKBkihYAAEDJFC0AAICS\nKVoAAAAlU7QAAABKpmgBAACUTNECAAAomaIFAABQMkULAACgZIoWAABAyRQtAACAkilaAAAAJVO0\nAAAASqZoAQAAlEzRAgAAKJmiBQAAUDJFCwAAoGSKFgAAQMkULQAAgJIpWgAAACVTtAAAAEqmaAEA\nAJRM0QIAACiZogUAAFAyRQsAAKBkihYAAEDJFC0AAICSKVoAAAAlU7QAAABKpmgBAACUTNECAAAo\nmaIFAABQMkULAACgZIoWAABAyRQtAACAkilaAAAAJVO0AAAASqZoAQAAlEzRAgAAKJmiBQAAUDJF\nCwAAoGSKFgAAQMkULQAAgJIpWgAAACVTtAAAAEqmaAEAAJRM0QIAACiZogUAAFAyRQsAAKBkihYA\nAEDJFC0AAICSKVoAAAAlU7QAAABKpmgBAACUTNECAAAomaIFAABQMkULAACgZIoWAABAyRQtAACA\nkilaAAAAJVO0AAAASqZoAQAAlEzRAgAAKJmiBQAAUDJFCwAAoGSKFgAAQMkULQAAgJIpWgAAACVT\ntADoV+69996ccMIJSZKWlpYcd9xxeeihhypOBcDBRtECoF855ZRTcu655yZJrrrqqlx00UWZNWtW\nxakAONgoWgD0O1dffXWS5MEHH8yf/dmfVZwGgIORogVAv7Nhw4YkyZYtW9LW1lZxGgAORooWB62u\nrq50dHSkKIqqowAl+9CHPpQk+YM/+IP8+Z//ecVpADgYKVoctLq7u/P444+nvb1d2YJ+5Nvf/nYG\nDBiQJPnoRz+ae++9N7fffnvFqQA42DRVHQCqtGbNmkyZMiXbt2/PwIED09DgvQeodxdffHEuvvji\n1Gq1NDY25p577qk6EgAHIa8qOejtLFfbt29PZ2envVsAAOw3RQuS1Gq11Gq1dHR0OG8LAID9pmjB\ni3aWra6urjz22GPp7u6uOhIAAHVK0YKXqNVqaWhoyFNPPdVzKCEAAOwrRQt64VBCAABeLUWLg1Zb\nW1taW1uzffv23S7feShhZ2enKeABANgnihYHrcGDB2fgwIFZvHhxNm7cuNt1dpatJ598Mtu3b3fe\nFgAAe0XR4qDW1NSUOXPmZMWKFVmxYsVu91rVarWsXr06iSngAQDYO4oWB73Bgwdn7ty5KYoiixcv\nfsVDCcs+b2vBggV53etel6OOOip/9Vd/Vco2D3aXXnppxo8fn1mzZlUdpd946qmn8qY3vSkzZ87M\ncccdl2uuuabqSP1CW1tbTj311Jx44ok57rjj8qlPfarqSP1GV1dXTjrppLzjHe+oOkq/MnXq1Bx/\n/PGZPXt25s6dW3UceE1TtCA7PrT46KOPzrRp07J48eJeZxssewr4rq6uXH755bnllluybNmyfPe7\n382yZcv2a5skl1xySRYsWFB1jH6lqakpX/7yl7Ns2bIsXLgwX/va1zxWSzBo0KDcfvvteeCBB3L/\n/fdnwYIFWbhwYdWx+oVrrrkmM2bMqDpGv/Szn/0s999/fxYvXlx1FHhNU7TgJcaNG5c5c+Zk+/bt\nezyUsKwp4BctWpSjjjoq06dPz8CBA3PBBRfkRz/60f7cBZKcccYZGTNmTNUx+pUJEybk5JNPTpIM\nHz48M2bMyJo1aypOVf9qtVqGDRuWJD17y2u1WsWp6t/q1atz880357LLLqs6CnAQU7TgNwwePDjN\nzc2veChhsv9TwK9ZsyZLly7t+X3y5MlevJboiSeeqDpCv/Q7v/M7WbJkSU477bSqo/QLXV1dmT17\ndkaMGJGzzz7buJbgIx/5SP76r/86DQ0NWbRoUdVx+pVarZa3vOUtGTlyZL7+9a9XHQde0xQt6MW+\nHEq4P1PAt7W17W9UeuEDp8u3devWLF68OF/5ylcyYsSIquP0C42Njbn//vsza9asLFq0KA899FDV\nkeraTTfdlPHjx2fOnDlJkvb29ooT9S933HFHfvnLX2bq1Kn52te+ln//93+vOhK8ZilasAcvPZTw\n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\n7rvvvqxfv97cFns1jw4y5g0PD//o1u2Dg4N59dVXM378+MyaNcuHnxr6+uuv895772XWrFkiq8YG\nBgYyYcKEei9jTJowYYI5rRqrVCqZNWtW3n///Xz11Vf1Xs6odvzxx+e9997Lli1bsnv37jz77LOZ\nNm1ampubM2XKlDQ1NWXu3Lm59957kySrVq3KaaedlnXr1qWvry8LFizIEUcckZ6enjpfCfwwd7QY\ns/bMYf3YL9Rdu3blzTffzPTp0zNp0iTP8NfY5s2bM3369DQ0NDjvpsb6+voyYcIEP/c6mDhxYj7/\n/HMbkdTYuHHj0t7ens2bN7uD/guqVCq54447ct5552VoaChLlizJ5MmT8+WXX+bPf/5zLr300px1\n1lm5++67c8wxx2TSpEm5//7709DQkOXLl+exxx7LwoULc8EFF9T7UuAHOUeLMWtoaCgbNmz40Q+R\ne4LMroL1seeMFWpvz+8HHzZrz8++vrzv1N4zzzyTjRs35vrrr0+lUsnatWuzfv369PT0pFqtprOz\nM6+99lr6+/szMDCQvr6+tLW15be//W36+vpGnnzYcx6XuS1+Yc7Rgh/S0NCQU089td7LAIAxb7/9\n9svzzz+f008/PUny/PPPp6urKxs3bkxbW1vmzJmTlStX5qOPPsrVV1+d1157LQcddFB27NiRs88+\nO83NzVmxYkVmz55d5yuBf/PnGgAA6mrOnDnp7u7O+++/n8HBwTz44IPp6OjItGnT0tTUlMWLF+fe\ne+/NFVdckdWrV+eggw5KkvzpT3/KDTfcYLdI9koeHQQAoO7WrFmT6667LkNDQznhhBMyfvz4TJky\nJbNnz05/f39uuummDA4OpqWlJcm/No1pbm7O3//+98ybNy933nmnO1rUyk96dNAdLQAA6q6zszNd\nXV159913s3DhwiTJLbfckvnz5ydJFixYkIceeii7du3KF198kZ6entx1113/9X3++te/5ogjjsiR\nRx6Ziy66qKbXAN9mRgsAgL1Ka2trPvzww5Gve3p60tLSkqVLl2bt2rX5zW9+k5aWlpxyyilpamrK\nJ598kvnz52fFihW57bbbsmHDhkyaNCm9vb11vArGOne0AADYq/znzNYjjzySqVOnpr29feTMrVtv\nvTVXX311tmzZkpNOOimrV6/OCy+8kKVLl2bSpElJMjLLBfUgtAAA2Ks0NjZmxYoV+cMf/pBZs2Zl\n0aJF2XfffdPb25vVq1cnSdra2rJ169bv/L+urq50dXXl97//fU466SRbvFNXHh0EAGCv09nZmc7O\nzpGv//a3v+X4448fmdn6thtvvDFLlixJT09Puru78+qrr6anpyennnpqNm3alIGBgVx88cXZvn17\nhoaGcvvtt3/ne8MvwZtSZ98AAAWpSURBVB0tAAD2et83t9Xa2pqhoaEsXbo0Tz75ZC666KIMDAyk\nu7s7hx12WGbMmJHu7u4sX748ixYtyiuvvJJHHnkkV111VR2vhLFCaAEAsNf7vrmt+fPn58UXXxyZ\n3Vq4cGGam5vz+OOPZ9u2benq6sq0adNSqVQyMDCQJOnv78+UKVPqfDWMBc7RAgDgV+HbZ2398Y9/\nzLJly3L++eenv78/a9euzfDwcM4666y8+OKLaW1tzbJly7J48eJ8/PHHOfPMM9PX15cvv/wyV155\nZZ588skk/wqvqVOnZt26dXW+On5FnKMFAMDo8e2ztpYtW5YkWbx4cQ499NAkSaVSyZIlSzJ58uR8\n+umnWb58eZJk5cqVueSSS9LT05M1a9Zk1apVmTt3br744ov09vZmwYIFdbsmRi+hBQDAr9b3zW7N\nnTv3OzsO3n///Vm0aFGS5OSTT05fX182b96cM844I4sXL87KlStrvm5GP6EFAMCv1vfNbl177bU5\n4IADRl5zyCGH5Omnn06SvPXWW9mxY0fa29vzj3/8I3/5y1+yffv2fPzxx/W6BEYp27sDAPCr9e0z\nt/bMbh155JG55pprsmPHjiTJXXfdlcsuuyx33313KpVKDjvssDz11FN5+eWXM27cuJEzuVpaWup8\nNYwmNsMAAGDU2bJlS84555y88cYb//Vvv/vd77Jr1660tbUlychByLNnz671Mvl1+kmbYbijBQDA\nmNLZ2Zl58+blwgsvTJLMnDkzra2tdV4Vo40ZLQAAxpT58+fn4YcfzvDwcF544YVMnDjRY4MU544W\nAACjyoUXXpj169dn27ZtaWtry80335xvvvkmSXLllVems7Mza9asSXt7e/bff/88+OCDdV4xo5EZ\nLQAAgJ/OgcUAAAD1ILQAAAAKE1oAAACFCS0AAIDChBYAAEBhQgsAAKAwoQUAAFCY0AIAAChMaAEA\nABQmtAAAAAoTWgAAAIUJLQAAgMKEFgAAQGFCCwAAoDChBQAAUJjQAgAAKExoAQAAFCa0AAAAChNa\nAAAAhQktAACAwoQWAABAYUILAACgMKEFAABQmNACAAAoTGgBAAAUJrQAAAAKE1oAAACFCS0AAIDC\nhBYAAEBhQgsAAKAwoQUAAFCY0AIAAChMaAEAABQmtAAAAAoTWgAAAIUJLQAAgMKEFgAAQGFCCwAA\noDChBQAAUJjQAgAAKExoAQAAFCa0AAAAChNaAAAAhQktAACAwoQWAABAYUILAACgMKEFAABQmNAC\nAAAoTGgBAAAUJrQAAAAKE1oAAACFCS0AAIDChBYAAEBhQgsAAKAwoQUAAFCY0AIAAChMaAEAABQm\ntAAAAAoTWgAAAIUJLQAAgMKEFgAAQGFCCwAAoDChBQAAUJjQAgAAKExoAQAAFCa0AAAAChNaAAAA\nhQktAACAwoQWAABAYUILAACgMKEFAABQmNACAAAoTGgBAAAUJrQAAAAKE1oAAACFCS0AAIDChBYA\nAEBhQgsAAKAwoQUAAFCY0AIAAChMaAEAABQmtAAAAAoTWgAAAIUJLQAAgMKEFgAAQGFCCwAAoDCh\nBQAAUJjQAgAAKExoAQAAFCa0AAAAChNaAAAAhQktAACAwoQWAABAYUILAACgMKEFAABQmNACAAAo\nTGgBAAAUJrQAAAAKE1oAAACFCS0AAIDChBYAAEBhQgsAAKAwoQUAAFCY0AIAAChMaAEAABQmtAAA\nAAoTWgAAAIUJLQAAgMKEFgAAQGFCCwAAoDChBQAAUJjQAgAAKExoAQAAFCa0AAAAChNaAAAAhQkt\nAACAwoQWAABAYUILAACgMKEFAABQmNACAAAorPFnvr7yi6wCAABgFHFHCwAAoDChBQAAUJjQAgAA\nKExoAQAAFCa0AAAAChNaAAAAhQktAACAwoQWAABAYUILAACgMKEFAABQ2D8Bsfo35U1JHwIAAAAA\nSUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f1a88432a58>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "F = flux * p + bound_flux * p_b\n",
    "\n",
    "neumann_faces = np.argwhere(bound.is_neu)\n",
    "\n",
    "assert np.allclose(np.abs(p_b[neumann_faces]), np.abs(F[neumann_faces]))\n",
    "\n",
    "F_n = F * g.face_normals\n",
    "pp.plot_grid(g, vector_value=100*F_n, figsize=(15, 12))"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
